# 对lena图像进行平均滤波
import cv2 as cv
filename = r'lena.jpg'
img = cv.imread(filename)    #读入图像
# 均值滤波的python函数
#  cv.blur(InputArray src,OutputArray dst,Size ksize,Point anchor=Point(-1,-1), int borderType = BORDER_DEFAULT)
image = cv.blur(img,(5,5))
# 显示原始图像
cv.imshow("source image",img)
# 展示高斯滤波过后的图像
cv.imshow("Mean filtered image",image)
cv.waitKey()
cv.destroyAllWindows()

#对lena图形进行高斯平滑滤波.................................................
import cv2 as cv
filename = r'lena.jpg'   #读入图片
img = cv.imread(filename)
# 高斯滤波python实现
# cv.GaussianBlur(src,dst,ksize,double sigmaX,double sigmaY, borderType);
imgGauss = cv.GaussianBlur(img,(5,5),0)
# 显示原始图像
cv.imshow("source image",img)
# 展示高斯滤波过后的图像
cv.imshow("Gaussian filtered image",imgGauss)
cv.waitKey()
cv.destroyAllWindows()

# 对lena图像进行中值滤波.................................................
import cv2 as cv
filename = r'lena.jpg'     #图像命名
# 中值滤波 cv.medianBlur(InputArray scr,OutputArray dst,int ksize)
img = cv.imread(filename)   #读入图片
dst = cv.medianBlur(img,5)    #中值滤波
cv.imshow("source image",img)                 #展示原始图片
cv.imshow("Median filtered image",dst)   #展示中值滤波后的图像
cv.imwrite("output.jpg",dst)
cv.waitKey()
cv.destroyAllWindows()

#对滤波过后的结果进行比较：
# 图像经过均值滤波，高斯滤波，中值滤波后均变得更加模糊，但均值滤波的模糊程度最为明显。
# 虽然中值滤波对椒盐噪声有很大的优点，但由于原始图像中没有椒盐噪声，因此效果不明显。
# 中值滤波和高斯滤波的效果相差不大。